/*
 * Copyright (c) 2007-2020 西安交通信息投资营运有限公司 版权所有
 */

package com.xci.edu.core.dao;

import com.github.lvyanyang.annotation.Paging;
import com.xci.edu.core.entity.EduValidateQuestion;
import com.xci.edu.core.filter.EduValidateQuestionFilter;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 学习验证问题数据层
 * @author 吕艳阳 lvyanyang@xci96716.com
 * @since 2020-11-24 10:19:12
 */
public interface EduValidateQuestionDao {
    /**
     * 新建验证问题
     * @param entity 验证问题实体
     * @return 返回影响的行数
     */
    int insert(@Param("entity") EduValidateQuestion entity);

    /**
     * 修改验证问题
     * @param entity 验证问题实体
     * @return 返回影响的行数
     */
    int update(@Param("entity") EduValidateQuestion entity);

    /**
     * 根据主键删除验证问题
     * @param id 验证问题主键
     * @return 返回影响的行数
     */
    int deleteById(@Param("id") Long id);

    /**
     * 是否存在指定名称的验证问题
     * @param name      验证问题名称
     * @param excludeId 排除的主键，如果为null则不指定排除的主键
     * @return 如果存在返回true
     */
    boolean existxByName(@Param("name") String name, @Param("excludeId") Long excludeId);

    /**
     * 根据主键查询单个验证问题
     * @param id 验证问题主键
     * @return 返回验证问题实体
     */
    EduValidateQuestion selectById(@Param("id") Long id);

    /**
     * 查询验证问题列表
     * @param filter 过滤条件
     * @return 返回验证问题列表
     */
    List<EduValidateQuestion> selectList(@Param("filter") EduValidateQuestionFilter filter);

    /**
     * 查询验证问题分页列表
     * @param filter 过滤条件
     * @return 返回验证问题分页列表
     */
    @Paging(allowSortNames = {"name"})
    List<EduValidateQuestion> selectPageList(@Param("filter") EduValidateQuestionFilter filter);

    /**
     * 随机查询单个验证问题
     * @return 返回验证问题实体
     */
    EduValidateQuestion randomValidate();
}
